\chapter{RTThread实验开发环境的搭建}

本章介绍RT-Thread实验开发环境的搭建。

RT-Thread Nano 已集成在 Keil MDK 中，可以直接在 IDE 中进行下载添加。本文档介绍了如何使用 MDK 移植 RT-Thread Nano，并以一个 stm32f103 的基础工程作为示例进行讲解。

移植 Nano 的主要步骤：

准备一个基础的 keil MDK 工程，并获取 RT-Thread Nano pack 安装包并进行安装。
在基础工程中添加 RT-Thread Nano 源码。
适配 Nano，主要从 中断、时钟、内存这几个方面进行适配，实现移植。
验证移植结果：编写第一个应用代码，基于 RT-Thread Nano 闪烁 LED。
最后可对 Nano 进行配置：Nano 是可裁剪的，通过配置文件 rtconfig.h 实现对系统的裁剪。
准备工作
准备一份基础的裸机源码 (可通过 STM32CubeMx 可视化软件创建也可按照工程项目所需文档手动创建) 工程，如一份 stm32 的 LED 指示灯闪烁示例代码。
在 KEIL 上安装 RT-Thread Nano Pack。
基础工程准备
在移植 RT-Thread Nano 之前，我们需要准备一个能正常运行的裸机工程。作为示例，本文使用的是基于 STM32F103 的一个 LED 闪烁程序。程序的主要截图如下：

\begin{lstlisting}[language=C]
/* board.c */


void rt_os_tick_callback(void)
{
  rt_interrupt_enter();  

  rt_tick_increase();   

  rt_interrupt_leave();  
}


void SysTick_Handler()
{
    rt_os_tick_callback();
}

void rt_hw_board_init(void)
{
  /*
   * TODO 1: OS Tick Configuration
   * Enable the hardware timer and call the rt_os_tick_callback function
   * periodically with the frequency RT_TICK_PER_SECOND.
   */

 
  HAL_Init();  
  SystemClock_Config();  
  SystemCoreClockUpdate();  

  
  SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);

  /* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
  rt_components_board_init();
#endif

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
  rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}

\end{lstlisting}

